package day17.UDP_TCPdemo.TCP.CS;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class Cilentdemo1
{
    public static void main(String[] args) throws Exception
    {

//单发单收
//        System.out.println("客户端启动");
//
//        //new BufferedOutputStream(socket.getOutputStream());
//       // new PrintStream(socket.getOutputStream());
//
//        //192.168.14.1（公网ip）这个也行，本机ip127.0.0.1或者localhost
//        Socket socket = new Socket("localhost",8080);//建立端点请求与服务端的Socket（端点）相连接，两个点连接不就是管道，有时候也可以用socket来指管道的意思，毕竟两个点连接就是管道
//        //特殊数据流                                              //端点具有输出流管道是他的性质，我只是转化成一个更符合我目的的流
//          DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//           dos.writeInt(1);
//           dos.writeUTF("hello");
//
//
//        socket.close(); // 关闭端点
      //  多发多收
        Scanner sc = new Scanner(System.in);

        System.out.println("客户端启动");

        //new BufferedOutputStream(socket.getOutputStream());
        // new PrintStream(socket.getOutputStream());

        //192.168.14.1（公网ip）这个也行，本机ip127.0.0.1或者localhost//我觉得在客户端socket表示管道更多
        Socket socket = new Socket("localhost",8080);//建立管道请求与服务端的（口子）相连接
        //特殊数据流                                              //管道具有输出流是他的性质，我只是转化成一个更符合我目的的流
        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
        // 客户端通过输出流发送数据，然后通过服务端通过输入流读取到服务端
        String str;
        while(true)
        {
            str=sc.nextLine();
            if("exit".equals(str))//防止str空指针
            {
                socket.close();//用户要退出就把管道连接给关了（连接的管道给关了不是给他搞废）
              //  dos.close();//关不关都行，socket关了就行，而且关闭外层就行，内层就是：用来构建dos的流
                break;
            }
            else
            {
                dos.writeUTF(str);
                dos.flush();//刷新出去
            }
        }


    }


}
